package com.demo.assistent;
import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.V;
import dev.langchain4j.service.spring.AiService;
import reactor.core.publisher.Flux;
import static dev.langchain4j.service.spring.AiServiceWiringMode.EXPLICIT;
/**
 * AI智能助手
 */
@AiService(
        wiringMode =EXPLICIT,//如果有多个 AI 服务，每个服务连接不同的 LangChain4j 组件，必须显式指定所有组件， 设置wiringMode = EXPLICIT，且指定使用的组件名。
        streamingChatModel = "qwenStreamingChatModel",//流式输出,指定模型为千问
        chatMemoryProvider = "chatMemoryProvider",//不同用户区分
        tools = {"tripOrderTools","hotelOrderTools","spotOrderTools"}//配置tools
)
public interface Agent {
    /**
     * AI助手回答
     * @param userId 用户id
     * @param message 用户信息
     * @return
     */
    @SystemMessage(fromResource = "prompt.txt")
    public  Flux<String> chatMeg(@MemoryId @V("userId") int userId, @UserMessage  String message);
}
